Common Gateway Interface


   

   Common Gateway Interface(CGI——通用网关接口)

用于初始化软件服务的服务器方接口。这套接口描述了Web服务器与同一计算机上的软件的通信方式。也是一种重要的互联网技术,可以让一个客户端从网页浏览器向在执行在Web服务器上的程序请求数据。CGI描述了客户端和这个程序之间传输数据的一种标准。

最初,CGI是在1993年由美国国家超级电脑应用中心(NCSA)为 NCSA HTTPd web 服务器开发的。这个WEB服务器使用了 UNIX shell 环境变量 来保存从Web服务器传递出去的参数,然后生成一个运行CGI的独立的进程。

编程语言 Perl 是一个广泛被用途为 CGI 的一个语言,但CGI的一个目的是要独立于任何语言的。Web服务器无须在这个问题上对语言有任何了解。 事实上,CGI程序可以用任何脚本语言 或者是完全独立编程语言,只要这个语言可以在这个系统上运行。除Perl外,像Unix shell s cripts, Python, Ruby, PHP, Tcl, C/C++, 和Visual Basic都可以用来写CGI。

实现wiki的程序就是CGI程序的一个例子:首先用户代理程序向这个CGI程序请求某个名称的条目,如果该条目页面存在,CGI程序就会去获取那个条目页面的原始数据,然后把它转换成HTML并把结果输出给浏览器;如果该条目页面不存在,CGI程序则会提示用户新建一个页面。所有的WIKI操作都是通过这个程序来处理的。

CGI的工作方式,从Web服务器的角度看,是在特定的位置(比如,http://www.example.com/wiki.cgi)定义了可以运行CGI程序。当收到一个匹配URL的请求,相应的程序就会被调用,并将客户端发送的数据作为输入。程序的输出会由Web服务器收集,并加上合适的头,再发送回客户端。

因为这个技术一般每次CGI请求都需要新生成一个程序的副本来运行,这样大的工作量会很快将服务器压垮,因此一些更有效的技术像mod_perl,可以让脚本解释器直接作为模块集成在Web服务器中,这样就能避免重复载入和初始化解释器。不过这只是就那些需要解释器的高级语言(即解释语言)而言的,使用诸如C一类的编译语言则可以避免这种额外负荷。由于C及其他编译语言的程序与解释语言程序相比,前者的运行速度更快、对操作系统的负荷更小,使用编译语言程序是可能达到更高效率的。
   

自定义分类:
网页设计
 
贡献者:
风元素
Copyright © 1999-2024 C114 All Rights Reserved | 联系我们 | 沪ICP备12002291号-4